package com.neusoft.ch10.hw;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class Homework {

	public static void main(String[] args) {
		test01();
	}

	/**
	 * List+Map存储二维表格
	 */
	private static void test01() {
		// 创建一个list用于储存行（map）
		List<Map<String, Object>> lstRows = new ArrayList<>();
		// 定义一个map，用于存储每一行中的所有的列的键值对
		Map<String, Object> mapCols0 = new LinkedHashMap<>();
		// 将第一行的数据的键值对，存入map中
		mapCols0.put("stuName", "小明");
		mapCols0.put("stuAge", 18);
		mapCols0.put("stuSex", "男");
		mapCols0.put("stuNo", "15001");
		mapCols0.put("stuAddress", "天津东丽");
		// 将第一行的map存入list中
		lstRows.add(mapCols0);
		
		// 创建第二行数据
		Map<String, Object> mapCols1 = new LinkedHashMap<>();
		// 将第二行的数据的键值对，存入map中
		mapCols1.put("stuName", "夏利");
		mapCols1.put("stuAge", 20);
		mapCols1.put("stuSex", "女");
		mapCols1.put("stuNo", "15002");
		mapCols1.put("stuAddress", "天津和平");
		// 将第二行的map存入list中
		lstRows.add(mapCols1);

		// 打印集合内容
		printList(lstRows);
	}

	/**
	 * 打印list
	 * 
	 * @param lstRows
	 *            被打印对象
	 */
	private static void printList(List<Map<String, Object>> lstRows) {
		// 遍历list
		if (lstRows != null && lstRows.size() > 0) {
			// 获取迭代器
			Iterator<Map<String, Object>> it = lstRows.iterator();
			// 控制表头数据只打印一次
			boolean onlyOne = true;
			// 遍历
			while (it.hasNext()) {
				// 取出当前遍历对象
				Map<String, Object> eachMap = it.next();
				// 遍历map对象
				if (eachMap != null) {
					// 打印表头
					if (onlyOne) {
						for (String keyName : eachMap.keySet()) {
							System.out.print("\t" + keyName);
						}
						// 修改变量值不允许再打印
						onlyOne = false;
						// 换行
						System.out.println();
					}
					// 打印数据内容
					for (String keyName : eachMap.keySet()) {
						System.out.print("\t" + eachMap.get(keyName));
					}
					// 换行
					System.out.println();
				}
			}
		}
	}

}
